const mongoose = require("mongoose")

let goodsModel = mongoose.model("goodsModel")

/*
*+++++++++++++++++++++++++++++++++++++刘磊++++++++++++++++++++++++++++++++
*/
// module.exports.getGoods = async () => {
//     // 多表关联查询
//     return await goodsModel.find();
// }
module.exports.getGoodsecharts = async () => {
    // 多表关联查询
    return await goodsModel.find();
}
/**
 * ++++++++++++++++++++++++++++++++++李兴乾+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 */

// 获取商品 分页获取 lxq
module.exports.getGoodsByPageSell = async ({ pageSize, currentPage,state,shopsId }) => {
    // 多表关联查询
    // const shop = await goodsModel.find({[shopsId._id]:shopId}).populate('shopsId')
    // 获取当前集合的数据总条数

    
    console.log(3333333333333,pageSize, currentPage,state,shopsId);
    
    const total = (await goodsModel.find({state,shopsId})).length;
    // rows 获取的是分页的商品数据 .populate('shopsId')多表关联
    const rows = await goodsModel
        .find({state,shopsId})
        .populate('shopsId')
        .populate('storesId')
        .limit(pageSize - 0)   // limit(number) 用于设置请求数据的条数
        .skip((currentPage - 1) * pageSize);   // 用于设置跳过多少条数据
        // console.log('333333333门店',shop)
    return { total, rows }
}
// 搜索（获取部分商品） lxq
module.exports.searchGoodsSell = async ({ searchType, searchValue, currentPage, pageSize,state,shopsId }) => {
    // 精确查询
    // return await goodsModel.find({ [searchType]: searchValue });
    // 模糊查询
    // 满足搜索条件的数据总条数
    // console.log(shopId);
    const total = (await goodsModel.find({ [searchType]: { $regex: searchValue, $options: '$i' },state,shopsId})).length;
    // 搜索到的分页商品数据
    const rows = await goodsModel
        .find({ [searchType]: { $regex: searchValue, $options: '$i' },state,shopsId})
        .populate('shopsId')
        .populate('storesId')
        .limit(pageSize - 0)   // limit(number) 用于设置请求数据的条数
        .skip((currentPage - 1) * pageSize);   // 用于设置跳过多少条数据
    console.log(rows);
    return { total, rows };
}



/** 
 * 获取库存请求===============================================================================================================
*/
// 获取商品 分页获取 lxq
module.exports.getAllGoodsByPageSell = async ({ pageSize, currentPage,state }) => {
    // 多表关联查询
    // 获取当前集合的数据总条数
    const total = (await goodsModel.find()).length;
    // rows 获取的是分页的商品数据 .populate('shopsId')多表关联
    const rows = await goodsModel
        .find()
        .populate('shopsId')
        .populate('storesId')
        .limit(pageSize - 0)   // limit(number) 用于设置请求数据的条数
        .skip((currentPage - 1) * pageSize);   // 用于设置跳过多少条数据
    return { total, rows }
}
// 搜索（获取部分商品） lxq
module.exports.searchAllGoodsSell = async ({ searchType, searchValue, currentPage, pageSize }) => {
    // 精确查询
    // return await goodsModel.find({ [searchType]: searchValue });
    // 模糊查询
    // 满足搜索条件的数据总条数
    const total = (await goodsModel.find({ [searchType]: { $regex: searchValue, $options: '$i' },})).length;
    // 搜索到的分页商品数据
    const rows = await goodsModel
        .find({ [searchType]: { $regex: searchValue, $options: '$i' },})
        .populate('shopsId')
        .populate('storesId')
        .limit(pageSize - 0)   // limit(number) 用于设置请求数据的条数
        .skip((currentPage - 1) * pageSize);   // 用于设置跳过多少条数据
    console.log(rows);
    return { total, rows };
}

/**
 * ================================================获取库存请求===============================
 */




/** 
 * 获取库存商品请求===============================================================================================================
*/
// 获取商品 分页获取 lxq
module.exports.getGoodsByPageUnsold = async ({ pageSize, currentPage,state }) => {
    // 多表关联查询
    // 获取当前集合的数据总条数
    const total = (await goodsModel.find({state})).length;
    // rows 获取的是分页的商品数据 .populate('shopsId')多表关联
    const rows = await goodsModel
        .find({state})
        .populate('shopsId')
        .populate('storesId')
        .limit(pageSize - 0)   // limit(number) 用于设置请求数据的条数
        .skip((currentPage - 1) * pageSize);   // 用于设置跳过多少条数据
        console.log("未上架",rows)
    return { total, rows }
}
// 搜索（获取部分商品） lxq
module.exports.searchGoodsUnsold = async ({ searchType, searchValue, currentPage, pageSize,state }) => {
    // 精确查询
    // return await goodsModel.find({ [searchType]: searchValue });
    // 模糊查询
    // 满足搜索条件的数据总条数
    const total = (await goodsModel.find({ [searchType]: { $regex: searchValue, $options: '$i' },state})).length;
    // 搜索到的分页商品数据
    const rows = await goodsModel
        .find({ [searchType]: { $regex: searchValue, $options: '$i' },state})
        .populate('shopsId')
        .populate('storesId')
        .limit(pageSize - 0)   // limit(number) 用于设置请求数据的条数
        .skip((currentPage - 1) * pageSize);   // 用于设置跳过多少条数据
    console.log(rows);
    return { total, rows };
}

/**
 * ================================================ 获取库存的商品请求===============================
 */


/** 
 * 获取下架的商品请求===============================================================================================================
*/
// 获取商品 分页获取 lxq
module.exports.getGoodsByPageOut = async ({ pageSize, currentPage,state }) => {
    // 多表关联查询
    // 获取当前集合的数据总条数
    const total = (await goodsModel.find({state})).length;
    // rows 获取的是分页的商品数据 .populate('shopsId')多表关联
    const rows = await goodsModel
        .find({state})
        .populate('shopsId')
        .populate('storesId')
        .limit(pageSize - 0)   // limit(number) 用于设置请求数据的条数
        .skip((currentPage - 1) * pageSize);   // 用于设置跳过多少条数据
        // console.log("未上架",rows)
    return { total, rows }
}
// 搜索（获取部分商品） lxq
module.exports.searchGoodsOut = async ({ searchType, searchValue, currentPage, pageSize,state }) => {
    // 精确查询
    // return await goodsModel.find({ [searchType]: searchValue });
    // 模糊查询
    // 满足搜索条件的数据总条数
    const total = (await goodsModel.find({ [searchType]: { $regex: searchValue, $options: '$i' },state})).length;
    // 搜索到的分页商品数据
    const rows = await goodsModel
        .find({ [searchType]: { $regex: searchValue, $options: '$i' },state})
        .populate('shopsId')
        .populate('storesId')
        .limit(pageSize - 0)   // limit(number) 用于设置请求数据的条数
        .skip((currentPage - 1) * pageSize);   // 用于设置跳过多少条数据
    console.log(rows);
    return { total, rows };
}

/**
 * ================================================ 获取下架的商品请求===============================
 */






// 删除库存商品
module.exports.deleteGoods = async (_id) => {
    return await goodsModel.deleteOne(_id);
}


// 下架商品（改变state的状态）
module.exports.deleteGoodsSell = async ({ _id}) => {
    return await goodsModel.updateOne({ _id }, { state:"下架"});
}
//通过id查找商品详情getGoodsId
module.exports.getGoodsId = async (goods_id) => {
    // console.log(goods_id);
    return await goodsModel.find(goods_id);
}
//修改商品updateGoodsSell
module.exports.updateGoodsSell = async ({_id,name,price,imagePath,num,shopsId}) => {
    // console.log(goods_id);
    return await goodsModel.updateOne({_id},{name,price,imagePath,num,shopsId});
}

/**
 * ++++++++++++++++++++++++++++++++++李兴乾+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 */

//刘磊

 // 添加商品
module.exports.addGoods = async function (good){
    // console.log(good)
    return await goodsModel.create(good)
}

// 上架商品（改变state的状态）
module.exports.puton = async ({ _id}) => {
    return await goodsModel.updateOne({ _id }, { state:"上架"});
}

//===============================徐芊===========================================================
//获取全部商品
module.exports.getGoods = async function (goods){
    console.log(goods);
    const data =  await goodsModel.find(goods).populate('shopsId')
   return data
};
  //===============================徐芊===========================================================
  